创建对象
NewObjFunc.lua.txt
    function New()
        local obj = CS.UnityEngine.GameObject()
        return obj
    end
    function New(name)
        local obj = CS.UnityEngine.GameObject(name)
        return obj
    end
    function NewToParent(parent)
        local obj = CS.UnityEngine.GameObject()
        obj.transform:SetParent(parent)
        return obj
    end
NewObj.cs
    /*
     *  created by shenjun
     */
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using XLua;
    namespace shenjun
    {
        public class NewObj : MonoBehaviour {
            LuaEnv luaEnv = new LuaEnv();
            void Start () {
                luaEnv.DoString("require 'NewObjFunc'");
                GameObject obj1 = CreateObj();
                GameObject obj2 = CreateObj("NewObj");
                GameObject obj3 = CreateObj(obj2.transform);
            }
            void Update () {
                if(luaEnv != null)
                {
                    luaEnv.Tick();
                }
            }
            private void OnDestroy()
            {
                luaEnv.Dispose();
            }
            [XLua.CSharpCallLua]
            public delegate GameObject CreateObjDel();
            GameObject CreateObj()
            {
                CreateObjDel del = luaEnv.Global.Get<CreateObjDel>("New");
                return del();
            }
            [XLua.CSharpCallLua]
            public delegate GameObject CreateObjByNameDel(string name);
            GameObject CreateObj(string name)
            {
                CreateObjByNameDel del = luaEnv.Global.Get<CreateObjByNameDel>("New");
                return del(name);
            }
            [CSharpCallLua]
            public delegate GameObject CreateObjToParentDel(Transform parent);
            GameObject CreateObj(Transform parent)
            {
                CreateObjToParentDel del = luaEnv.Global.Get<CreateObjToParentDel>("NewToParent");
                return del(parent);
            }
        }
    }
🔚